Skip to content

qwandor/anes-rs

Repository files navigation

Stable Status Beta Status Nightly Status crates.io docs.rs MIT Apache 2.0 LOC

ANSI Escape Sequences provider & parser

This README file is for the anes-rs repository. If you're looking for the user documentation, please, go to anes/README.md.

Repository organisation

anes-rs
 ├ README.md        - this README
 ├ anes             - `anes` crate
 │  ├ benches       - `anes` crate benchmarks
 │  ├ examples      - `anes` crate examples
 │  ├ src           - `anes` crate source code
 │  ├ tests         - `anes` crate tests
 │  └ README.md     - `anes` crate README for crates.io site
 ├ fuzzer            - fuzzing binary targets
 ├ interactive-test  - interactive test for the `anes` crate
 └ scripts           - various scripts to run bechmarks, fuzzer, ...

Benchmarks

You can run benchmarks with the scripts/bench.sh script. criterion output is available in the anes/target/criterion folder. If you'd like to modify the parser module (anes/src/parser) in any way, please, do:

  • run benchmarks,
  • modify the parser code,
  • run benchmarks again.

Do not commit any change which degrades the parser performance. TIA!

Fuzzer

You can start fuzzing with the scripts/fuzz.sh script. Feel free to stop fuzzing any time with the Ctrl C, AFL allows you to continue with the scripts/fuzz-continue.sh script.

Motivation

There're couple of terminal crates like:

All these crates do share two pieces of code:

  • ANSI escape sequences and
  • input event parsers.

I think that it's a waste of resources and asked Timon (the crossterm crate maintainer) what he thinks about a new crate as a building block for the crossterm and other crates. And here we are ...

License

The ANES crate is dual-licensed under Apache 2.0 and MIT terms.

Copyrights in the ANES project are retained by their contributors. No copyright assignment is required to contribute to the ANES project.